<?php
	/**
     * Incluyendo el archivo donde se encuentra la clase xajax
     */
	 require_once $_SERVER['DOCUMENT_ROOT'] . '/spa/xajax/xajax_core/xajax.inc.php';

    /**
     * Instanciando un objeto de la clase xajax
     */
	 $xajax = new xajax();
	 
	 $rif = $HTTP_GET_VARS['rif']; // Para que el usuario pueda regresar al local
	 
	 function buscarNombreLocal($rif) {
		$conexion = OCILogon('spa', '1234') or die("¡No se pudo conectar a la base de datos!") or die(OCIError());
		
		$query = "SELECT NOMBRE_LOCAL
				  FROM LOCAL
				  WHERE PK_RIF_LOCAL = '$rif'";
				  
		$sentencia = OCIParse($conexion, $query);
		
		OCIExecute($sentencia);
		
		OCILogOff($conexion);
		
		$rows = OCIFetchstatement($sentencia, $resultado);
		
		if ($rows > 0)
			$nombreLocal = $resultado['NOMBRE_LOCAL'][0];
			
		return $nombreLocal;
	}

    /**
     * Escribiendo una función que será llamada por medio de ajax
     */
	 function buscar_producto($idProducto) {
		 $conexion = OCILogon ('spa','1234') or die( "¡No se pudo conectar a la base de Datos!") or die (OCIError());
	
    	 $query = "SELECT *
		 		   FROM PRODUCTO
				   WHERE PK_ID_PRODUCTO = $idProducto";
				   
		 $sentencia = OCIParse($conexion, $query);
	
		 OCIExecute($sentencia);		
	
		 OCILogOff($conexion);
		
		 $rows = OCIFetchstatement($sentencia, $resultado);
		
		 if ($rows > 0) {
		 	 $nombre = $resultado['NOMBRE'][0];
		 	 $tipo = $resultado['TIPO'][0];
		 	 $costo = $resultado['COSTO_UNITARIO'][0];
			 $descripcion = $resultado['DESCRIPCION'][0];
		 }
		 
		 /**
         * Instanciando un objeto de la clase que genera la respuesta con ajax
         */
         $respuesta = new xajaxResponse();

        /**
         * Escribiendo en las capas (div) con id = nombre, tipo, costo, descripcion
		 * En cada capa se crea el campo de texto con el valor defecto traído de la base de datos
         */
         $nombre = "<input name='nombre' type='text' id='nombre' value='$nombre' size='40' maxlength='40' onblur='xajax_validarNombre(document.producto.nombre.value, document.producto.idProducto.options[document.producto.idProducto.selectedIndex].value)'/>";
		 $tipo = "<input name='tipo' type='text' id='tipo' value='$tipo' size='40' maxlength='20' onblur='xajax_validarTipo(document.producto.tipo.value)'/>";
		 $costo = "<input name='costo' type='text' id='costo' value='$costo' size='40' maxlength='9' onblur='xajax_validarCosto(document.producto.costo.value)'/>";
		 $descripcion = "<input name='descripcion' type='text' id='descripcion' value='$descripcion' size='40' maxlength='55' onblur='xajax_validarDescripcion(document.producto.descripcion.value)'/>";
		 
		/**
		 * Para escribir en las capas se utiliza el método assign del objeto respuesta de la clase xajaxResponse creado
		 * Recibe como parámetros el nombre de la capa (div), "innerHTML" (siempre es así) y lo que se va a escribir en dicha capa
		 */
         $respuesta -> assign("nombre", "innerHTML", $nombre);
		 $respuesta -> assign("tipo", "innerHTML", $tipo);
		 $respuesta -> assign("costo", "innerHTML", $costo);
		 $respuesta -> assign("descripcion", "innerHTML", $descripcion);
		 $respuesta -> assign("errorProducto", "innerHTML", '');
		 $respuesta -> assign("errorP", "innerHTML", '<input name="errorProducto" type="hidden" value="false"');
		 $respuesta -> assign("errorTipo", "innerHTML", '');
		 $respuesta -> assign("errorT", "innerHTML", '<input name="errorTipo" type="hidden" value="false"');
		 $respuesta -> assign("errorCosto", "innerHTML", '');
		 $respuesta -> assign("errorC", "innerHTML", '<input name="errorCosto" type="hidden" value="false"');
		 $respuesta -> assign("errorDescripcion", "innerHTML", '');
		 $respuesta -> assign("errorD", "innerHTML", '<input name="errorDescripcion" type="hidden" value="false"');
		 $respuesta -> assign("mensaje", "innerHTML", '');

        /**
         * Devolviendo el objeto que genera la respuesta con ajax
         */
         return $respuesta;
     }
	 
	 /**
      * Asociando la función creada al objeto xajax
      */
      $xajax -> registerFunction("buscar_producto");
	 
	 /**
     * Escribiendo una función que será llamada por medio de ajax
     */
	 function modificar_producto($producto) {
		 $idProducto = $producto['idProducto'];
		 $nombre = $producto['nombre'];
		 $tipo = $producto['tipo'];
		 $costo = $producto['costo'];
		 $descripcion = $producto['descripcion'];
		
		 $conexion = OCILogon ('spa','1234') or die( "¡No se pudo conectar a la base de Datos!") or die (OCIError());
	
    	 $query = "UPDATE PRODUCTO SET
		  		  	 NOMBRE = INITCAP('$nombre'),
				  	 TIPO = INITCAP('$tipo'),
					 COSTO_UNITARIO = $costo,
					 DESCRIPCION = '$descripcion'
				   WHERE PK_ID_PRODUCTO = $idProducto";
				  
		 /**
		  * Un number puede introducirse con y sin comillas. Un varchar sólo con comillas.
		  * En este caso se inserta el costo entre comillas para que el usuario pueda ingresar un valor con coma (,)
		  * y con punto (.)
		  */

		 $sentencia = OCIParse($conexion, $query);
	
		 $c = OCIExecute($sentencia);
		
		 OCICommit($conexion);
		
		 $query = "SELECT PK_ID_PRODUCTO, NOMBRE
				   FROM PRODUCTO
				   ORDER BY PK_ID_PRODUCTO DESC";
				  
		 $sentencia = OCIParse($conexion, $query);
		
		 OCIExecute($sentencia);
		
		 /**
		  * La variable $impresion actualiza los nombres de los productos en la lista desplegable o combo box para que muestre
		  * los tras una modificación del usuario
		  */
		  $impresion = '<select name="idProducto" onChange="xajax_buscar_producto(document.producto.idProducto.options[document.producto.idProducto.selectedIndex].value)">';
		  $impresion .= '<option value="0" selected="selected">Seleccione</option>';
		
		  $rows = OCIFetchstatement($sentencia, $resultado);
		
		  if ($rows > 0)
			  for ($i = 0; $i < $rows; $i++)
				  $impresion .= '<option value=' . $resultado['PK_ID_PRODUCTO'][$i] . '>' . $resultado['NOMBRE'][$i] . '</option>';
		
		  OCILogOff($conexion);
		  
		  $nombre = '<font color="#FFFFFF">' . $nombre . '</font>';
		  $tipo = '<font color="#FFFFFF">' . $tipo . '</font>';
		  $costo = '<font color="#FFFFFF">' . $costo . ' $US</font>';
		  $descripcion = '<font color="#FFFFFF">' . $descripcion . '</font>';
		
		  /**
		   * Muestra el mensaje de éxito después de la actualización
		   */
		   $mensaje = '<font size="+1" color="#FFFFFF">¡MODIFICACIÓN EXITOSA!</font>';
		   
		   /**
           * Instanciando un objeto de la clase que genera la respuesta con ajax
           */
           $respuesta = new xajaxResponse();

          /**
           * Escribiendo en las capas (div) con id = nombre, tipo, costo, descripcion
		   * En cada capa se crea el campo de texto con el valor defecto traído de la base de datos
           */
		   $respuesta -> assign("nombre", "innerHTML", $nombre);
		   $respuesta -> assign("tipo", "innerHTML", $tipo);
		   $respuesta -> assign("costo", "innerHTML", $costo);
		   $respuesta -> assign("descripcion", "innerHTML", $descripcion);
		   $respuesta -> assign("combobox", "innerHTML", $impresion);
		   $respuesta -> assign("mensaje", "innerHTML", $mensaje);
		 
		  /**
           * Devolviendo el objeto que genera la respuesta con ajax
           */
           return $respuesta;
	}

   /**
    * Asociando la función creada al objeto xajax
    */
	$xajax -> registerFunction("modificar_producto");
	
	function validarNombre($nombre, $idProducto) {
		$respuesta = new xajaxResponse();
		 
		if ($nombre == '') {
			$respuesta -> assign("errorProducto", "innerHTML", '<font color="#990000" size="-1">* Campo obligatorio</font>');
			$respuesta -> assign("errorP", "innerHTML", '<input name="errorProducto" type="hidden" value="true" />');
		}
		 
		else {
			$conexion = OCILogon('spa', '1234') or die("¡No se pudo conectar a la base de datos!") or die(OCIError());
			
			$query = "SELECT PK_ID_PRODUCTO
			          FROM PRODUCTO
					  WHERE NOMBRE = INITCAP('$nombre')";
					  
			$sentencia = OCIParse($conexion, $query);
			
			OCIExecute($sentencia);
			
			OCILogOff($conexion);
			
			$rows = OCIFetchstatement($sentencia, $resultado);
			
			if (($rows > 0) && ($resultado['PK_ID_PRODUCTO'][0] != $idProducto)) {
				$respuesta -> assign("errorProducto", "innerHTML", '<font color="#990000" size="-1">* Nombre duplicado</font>');
				$respuesta -> assign("errorP", "innerHTML", '<input name="errorProducto" type="hidden" value="true" />');
			}
				
			else {
				$respuesta -> assign("errorProducto", "innerHTML", '');
				$respuesta -> assign("errorP", "innerHTML", '<input name="errorProducto" type="hidden" value="false" />');
			}
		}
		 
		return $respuesta;
	}
	 
	$xajax -> registerFunction("validarNombre");
	 
	function validarTipo($tipo) {
		$respuesta = new xajaxResponse();
		 
		if ($tipo == '') {
			$respuesta -> assign("errorTipo", "innerHTML", '<font color="#990000" size="-1">* Campo obligatorio</font>');
			$respuesta -> assign("errorT", "innerHTML", '<input name="errorTipo" type="hidden" value="true" />');
		}
		 
		else {
			$respuesta -> assign("errorTipo", "innerHTML", '');
		 	$respuesta -> assign("errorT", "innerHTML", '<input name="errorTipo" type="hidden" value="false" />');
		}
		
		return $respuesta;
	}
	 
	$xajax -> registerFunction("validarTipo");
	
	function validarCosto($costo) {
		$respuesta = new xajaxResponse();
		 
		if ($costo == '') {
			$respuesta -> assign("errorCosto", "innerHTML", '<font color="#990000" size="-1">* Campo obligatorio</font>');
			$respuesta -> assign("errorC", "innerHTML", '<input name="errorCosto" type="hidden" value="true" />');
		}
		 
		else if (!is_numeric($costo)) {
			$respuesta -> assign("errorCosto", "innerHTML", '<font color="#990000" size="-1">* Costo debe ser numérico</font>');
			$respuesta -> assign("errorC", "innerHTML", '<input name="errorCosto" type="hidden" value="true" />');
		}
		
		else if (($costo < 0.01) || ($costo > 999999.99)) {
			$respuesta -> assign("errorCosto", "innerHTML", '<font color="#990000" size="-1">* Costo entre  0.01 y 999999.99</font>');
			$respuesta -> assign("errorC", "innerHTML", '<input name="errorCosto" type="hidden" value="true" />');
		}
		
		else {
			$respuesta -> assign("errorCosto", "innerHTML", '');
		 	$respuesta -> assign("errorC", "innerHTML", '<input name="errorCosto" type="hidden" value="false" />');	
		}
		
		return $respuesta;
	}
	
	$xajax -> registerFunction("validarCosto");
	
	function validarDescripcion($descripcion) {
		$respuesta = new xajaxResponse();
		
		if ($descripcion == '') {
			$respuesta -> assign("errorDescripcion", "innerHTML", '<font color="#990000" size="-1">* Campo obligatorio</font>');
			$respuesta -> assign("errorD", "innerHTML", '<input name="errorDescripcion" type="hidden" value="true" />');
		}
		
		else {
			$respuesta -> assign("errorDescripcion", "innerHTML", '');
		 	$respuesta -> assign("errorD", "innerHTML", '<input name="errorDescripcion" type="hidden" value="false" />');
		}
		
		return $respuesta;		
	}
	
	$xajax -> registerFunction("validarDescripcion");

   /**
    * Ejecutando el método del objeto xajax que permite procesar las
    * peticiones que puedan llegar desde la página
    */
    $xajax -> processRequest();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License

Name       : Beach Sunset
Description: A two-column, fixed-width design for 1024x768 screen resolutions.
Version    : 1.0
Released   : 20090416

-->
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<title>Modificar producto</title>
		<?php
			/**
     	 	 * Indicando al objeto xajax que se encargue de generar el código
     	 	 * javascript necesario para procesar las llamadas a ajax
     	 	 */
     		 $xajax -> printJavascript("xajax/");
		?>
        <script>
			function modificarProducto() {
				errorProducto = document.producto.errorProducto.value;
				errorTipo = document.producto.errorTipo.value;
				errorCosto = document.producto.errorCosto.value;
				errorDescripcion = document.producto.errorDescripcion.value;
			
				if ((errorProducto == 'false') && (errorTipo == 'false') && (errorCosto == 'false') && (errorDescripcion == 'false'))
					xajax_modificar_producto(xajax.getFormValues('producto'));
					
				else
					alert("¡El producto presenta inconvenientes, revise e intente de nuevo!");
			}
		</script>
		<meta name="keywords" content="" />
		<meta name="description" content="" />
		<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
		<style type="text/css">
			<!--
				.Estilo2 {font-size: 12px; color: #FF6600; }
				.Estilo3 {font-size: 12px; color: #FF9900; }
				.Estilo4 {color: #FF6600}
				.Estilo5 {font-size: 24px}
				.Estilo7 {color: #FFFFFF}
				.Estilo8 {font-size: 12px; color: #FFFFFF; }
				.Estilo9 {font-size: 60px}
				.Estilo10 {color: #F0F0F0}
			-->
		</style>
	</head>
	<body>
		<div id="wrapper">
        	<div id="header">	
 <br />
		<div id="menu">				      
				<li  class="active"><a href="HOME.php" title="HOME">HOME</a></li>
				<li><a href="INSERTAR.php" title="INSERTAR">INSERTAR</a></li>
				<li><a href="ELIMINAR.php" title="ELIMINAR">ELIMINAR</a></li>
				<li><a href="CONSULTAR.php" title="CONSULTAR">CONSULTAR</a></li>
				<li><a href="MODIFICAR.php" title="MODIFICAR">MODIFICAR</a></li>
                <li><a href="MOSTRAR.php" title="MOSTRAR">MOSTRAR</a></li>
	  	</div>  <!-- end #menu -->		
  </div>    <!-- end #header -->

			<div id="logo">
				<h1><a href="#"><span class="">Take a Rest</span> ... </a></h1>
		    	<div align="left"></div>
			</div>
			<!-- end #logo -->  
	
		</div> <!-- end *header- wrapper -->
		<div id="page">
        	
            <div id="sidebar">
		<ul>
			<li>
				<h2>Acciones</h2>
				<p class="Estilo2">Pulse sobre una acción para ejecutarla</p>
			</li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="InsertarProducto.php<?php if ($rif != '') echo '?rif=' . $rif ?>" class="Estilo10">Agregar un nuevo producto</a></font>
            </li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="EliminarProducto.php?rif=<?php echo $rif ?>" class="Estilo10">Eliminar un producto</a></font>
            </li>
            <li>
            	<font color="#FFFFFF">&raquo; <a href="MostrarProducto.php<?php if ($rif != '') echo '?rif=' . $rif ?>" class="Estilo10">Mostrar todos los productos</a></font>
            </li>
            <?php
				if ($rif != '') {
					$linkRegresar = '<li>';
					$linkRegresar .= '<font color="#FFFFFF">';
					$linkRegresar .= '&raquo; <a href="ConsultarLocal.php?rif=' . $rif . '" class="Estilo10">Regresar al local</a>';
					$linkRegresar .= '</li>';
					
					echo $linkRegresar;
				}
			?>
		</ul>
</div>

	<?php
   		if ($rif != '') {
			$local = '<div align="left">';
			$local .= '<font color="#FFFFFF" size="+1">Local actual: </font>';
			$local .= '<font color="#CC3300">' . buscarNombreLocal($rif) . '</font>';
			$local .= '</div><br /><br />';
			
			echo $local;
		}
   	?>
            
  			<h1 align="center"><font color="#FFFFFF">Modificar producto</font></h1>
  			<p>&nbsp;</p>
  
  			<div align="center">
			  <form id="producto" name="producto">
  					<table width="509" border="0" cellpadding="5" cellspacing="5">
  						<tr>
    						<td width="246" align="right"><font color="#FFFFFF" size="+1">Producto</font></td>
    						<td width="247" align="left"><div id="combobox"><select name="idProducto" onChange="xajax_buscar_producto(document.producto.idProducto.options[document.producto.idProducto.selectedIndex].value)">
    							 	<option value="0">Seleccione</option>
                                    
<!-- xajax_buscar_producto(document.producto.idProducto.options[document.producto.idProducto.selectedIndex].value) 
	 Función JavaScript para enviar el elemento del combo box seleccionado por el usuario a la función buscar_producto.
     El parámetro que recibe es el identificador del elemento denntro de la lista desplegable, es decir, el identificador del
     producto a través del cual se buscará en la base de datos para mostrar sus detalles en los campos de texto -->
                                   
                                   
					<?php
						$conexion = OCILogon('spa', '1234') or die ('¡No se pudo conectar a la base de datos!') or die (OCIError());
		
						$query = "SELECT PK_ID_PRODUCTO, NOMBRE
				  				  FROM PRODUCTO
				  				  ORDER BY PK_ID_PRODUCTO DESC";
				  
						$sentencia = OCIParse($conexion, $query);
		
						OCIExecute($sentencia);
		
						OCILogOff($conexion);
		
						$impresion = '';
						$rows = OCIFetchstatement($sentencia, $resultado);
		
						/**
						 * Llenado inicial del combo box
						 */
						if ($rows > 0)
							for ($i = 0; $i < $rows; $i++)
								$impresion .= '<option value=' . $resultado['PK_ID_PRODUCTO'][$i] . '>' . $resultado['NOMBRE'][$i] . '</option>';
		
						echo $impresion;
					?>
    						</select></td>
  						</tr>
                        <tr>
                        	<td></td><td></td>
                        </tr>
  						<tr>
    						<td width="246" align="right"><font color="#FFFFFF" size="+1">Nombre</font></td>
    						<td width="247" align="left"><div id="nombre"><input name="nombre" type="text" id="nombre" size="40" maxlength="40" onblur="xajax_validarNombre(document.producto.nombre.value, document.producto.idProducto.options[document.producto.idProducto.selectedIndex].value)" /></div></td>
  						</tr>
                        <tr>
  							<td></td>
    						<td><div id="errorProducto"><font color="#990000" size="-1">* Campo obligatorio</font></div></td>
    						<td><div id="errorP"><input name="errorProducto" type="hidden" value="true" /></div></td>
  						</tr>
  						<tr>
    						<td align="right"><font color="#FFFFFF" size="+1">Tipo</font></td>
    						<td align="left"><div id="tipo"><input name="tipo" type="text" id="tipo" size="40" maxlength="20" onblur="xajax_validarTipo(document.producto.tipo.value)" /></div></td>
  						</tr>
                        <tr>
  							<td></td>
    						<td><div id="errorTipo"><font color="#990000" size="-1">* Campo obligatorio</font></div></td>
    						<td><div id="errorT"><input name="errorTipo" type="hidden" value="true" /></div></td>
  						</tr>
  						<tr>
    						<td align="right"><font color="#FFFFFF" size="+1">Costo</font></td>
    						<td align="left"><div id="costo"><input name="costo" type="text" id="costo" size="40" maxlength="9" onblur="xajax_validarCosto(document.producto.costo.value)" /></div></td>
  						</tr>
                        <tr>
  							<td></td>
    						<td><div id="errorCosto"><font color="#990000" size="-1">* Campo obligatorio</font></div></td>
    						<td><div id="errorC"><input name="errorCosto" type="hidden" value="true" /></div></td>
  						</tr>
  						<tr>
    						<td align="right"><font color="#FFFFFF" size="+1">Descripci&oacute;n</font></td>
    						<td align="left"><div id="descripcion"><input name="descripcion" type="text" id="descripcion" size="40" maxlength="55" onblur="xajax_validarDescripcion(document.producto.descripcion.value)" /></div></td>
  						</tr>
                        <tr>
  							<td></td>
    						<td><div id="errorDescripcion"><font color="#990000" size="-1">* Campo obligatorio</font></div></td>
    						<td><div id="errorD"><input name="errorDescripcion" type="hidden" value="true" /></div></td>
  						</tr>
  						<tr>
                            <td align="center" colspan="2"><input name="modificar" type="button" value="Modificar" onclick="modificarProducto()" /></td>
<!-- xajax_modificar_producto(xajax.getFormValues('producto'))
	 Función JavaScript para modificar el producto con los datos proporcionados por el usuario. El parámetro que recibe es el  
     formulario con todos los datos. En la función el formulario se accede como un array asociativo cuyos identificadores son los 
     nombres de los elementos -->
    					</tr>
  						<tr>
  							<td align="center" colspan="2"><div id="mensaje"></div></td>
  						</tr>
				</table>
			</form>
                        
            <p>&nbsp;</p>
			<div id="footer">
  				<p> Design by <a href="http://www.freecsstemplates.org/">Nubielis, Eduardo, Daniel </a></p>
            </div>
			<!-- end #footer -->

		</div>
		<!-- end #page -->
	</body>
</html>
